<?php
declare (strict_types = 1);

namespace app\admin\controller;//命名空间
use \think\facade\View;
use \think\facade\Db;
use \think\facade\Request;

class Index
{
    //单应用
    //访问：
    //http://tp31.com/index.php/Index/index
    //域名/入口文件/控制器/操作方法
    //多应用
    //http://tp31.com/index.php/admin/index/index
    //域名/入口文件/应用/控制器/操作方法
    public function index()
    {
        return View::fetch();
    }

    public function demo()
    {
        //url生成
        //{:url('应用/控制器/方法')}
        ////echo \think\facade\Route::buildUrl();生成url链接  /index.php/admin/Index/demo.html
       //echo \think\facade\Route::buildUrl('c');  //生成url链接  /index.php/admin/Index/c.html
       //echo \think\facade\Route::buildUrl('b/c');  //生成url链接  /index.php/admin/b/c.html
       //echo \think\facade\Route::buildUrl('a/b/c');  //生成url链接  /index.php/a/b/c.html
        //echo \think\facade\Route::buildUrl('',['id'=>1,'name'=>'hjx','age'=>20,'sex'=>'nan']);
        //echo \think\facade\Route::buildUrl()->domain('www'); //域名  http://www.tp31.com/index.php/admin/Index/demo.html
        //echo \think\facade\Route::buildUrl()->suffix('www'); //后缀/index.php/admin/Index/demo.www
        //助手函数url()
        //echo url('a/b/c',['id'=>1])->domain('www')->suffix('php');;
        //echo url('a/b/c',['id'=>1],'php','www');
    //模板赋值
        //标量赋值
        $name="黄家贤";
        View::assign('name1',$name);

        //一维数组
        $arr=[
            'name'=>'小鸡',
            'age'=>560
        ];
        View::assign('arr',$arr);

        //二维数组
        $arr2=[
            [
                'name'=>'小鸡',
                'age'=>560
            ],
            [
                'name'=>'小狗',
                'age'=>570
            ]
        ];
        View::assign('arr2',$arr2);

        //对象赋值
        $obj=new \stdClass();
        $obj->name="黄家贤";
        $obj->sex='男';
        View::assign('obj',$obj);
        //没什么
        //批量赋值1
        $arr3=[
            'name'=>'小鸡',
            'age'=>560
        ];
        View::assign($arr3);


        //循环标签
        //volist
        //name 循环数据源
        //id  循环变量
        //$key  索引
        //key  计数值
        //mod  范围循环计数
        //offset  起始位置
        //length 长度
        //empty  默认值 空值时输出的内容
        $list=[
            [
                'name'=>'小鸡',
                'age'=>570,
            ],
            [
                'name'=>'小狗',
                'age'=>560,
            ],
            [
                'name'=>'小猪',
                'age'=>580,
            ]
        ];

        View::assign('list',$list);

        //比较标签
        $num='';
        View::assign('num',$num);

        //判断标签
        //switch
        //if




        //使用函数
        $str=1;
        View::assign('str',$str);
        //批量赋值2 和批量赋值1意义一样
        return View('',$arr3);



    }

    public function get_info()
    {
        //请求类
//
 //
//
        //请求类request
        //接参
//        echo $id=\think\facade\Request::get('id');
//        echo $name=\think\facade\Request::post('name');
        //param 可以接 post get pathinfo
//        echo $id=\think\facade\Request::param('id');
//        $img=\think\facade\Request::file('img');
//
//        input('get.');
        //接全部get值
//        $get=\think\facade\Request::get();
//
 //       $id=\think\facade\Request::post('id','默认值','trim');
//      参数('变量名/变量修饰','默认值','过滤函数')
 //       echo "<pre>";
 //       print_r($id);
   //     echo "</pre>";

        //连接数据库
        $all=\think\facade\Db::table('ecm_user')->select();

        View::assign('all',$all);
        echo "<pre>";
        print_r($all);
        echo "</pre>";
        return view();
    }

    public function getUser()
    {
        //Db查询
        //where('字段','表达式','条件')
        //【查询一条数据】
//        $db=Db::table('ecm_user')->find(1); 返回一维数组
//        $db=Db::table('ecm_user')->where('id','=','1')->find();  返回一维数组
        //【查询所有数据】
//        $db=Db::table('ecm_user')->select();   //返回结果集对象
//        $arr=$db->toArray();                         //结果集转为数组
//        $arr=Db::name('user')->select();
    //  【查询指定字段】
//       echo $oj= Db::table('ecm_user')->where('id','=','2')->value('uname');
//        $ojd= Db::table('ecm_user')->column('uname');
        //【表达式查询(=,>,<,<=,>=,<>)】
//        $obj=Db::table('ecm_user')->where('id','>','1')->select();
//        【模糊搜索(like/notlike)】
//        $obj=Db::table('ecm_user')->where('uname','like','%悟%')->select();
//        【范围查询(in/notin/between/notbetween)】
//         $obj=Db::table('ecm_user')->where('id','in','1,2')->select();
//         $obj=Db::table('ecm_user')->where('id','between','1,3')->select();
//        【null/notnull 查询字段为空的】
//        $obj=Db::table('ecm_user')->where('openid',null)->select();
//        【exp】
//        $obj=Db::table('ecm_user')->where('id','exp','in(1,2,3)')->select();
//        $obj=Db::table('ecm_user')->where('id in(1,2,3)')->select();
//        【exists/notexists】
//        $oj=Db::table('ecm_user')->whereExists(function ($q){
//        $q->table('ecm_user')->where('id','=','1');
//        })->select();
//        【时间范围查询(between time,> time,>= time,< time,<= time)】
//        $oj=Db::table('ecm_user')->where('addtime','> time','2000-1-1')->select();
//        $oj=Db::table('ecm_user')->where('addtime','between time',['2000-1-1','2000-2-2'])->select();
//        【find in set 带3的】
//        $oj=Db::table('ecm_user')->where('head_img','find in set','3')->select();
//        echo "<pre>";
//        print_r($oj);
//        echo "</pre>";


        //【链式操作】
        //【table 参数表全名  name去表前缀】
        //Db::table('ecm_user')->select();
        //【alias】别名
        //Db::table('ecm_user')->alias('a')->select();
        //Db::table('ecm_user a')->select();
        //Db::table(['ecm_user'=>'a'])->select();
        //【order】排序
        //Db::table('ecm_user')->order('id','desc')->select();
        //Db::table('ecm_user')->order('id desc')->select();
        //Db::table('ecm_user')->order(['id'=>'desc'])->select();
        //Db::table('ecm_user')->orderRand()->select();
        //Db::table('ecm_user')->orderRaw('rand(id)')->select();
        //【join】连表
        //Db::table('ecm_user')
            //->alias('a')
            //->join('ecm_order b','a.id=o.uid')
            //->select();
        //Db::name('user')
            //->alias('a')
            //->join('order b','a.id=o.uid','left')
            //->join(['order'=>'b'],'a.id=o.uid','left')
            //->select();
        //【field】字段
        //Db::table('ecm_user')->field('uname,id')->select();//字符串参数
        //Db::table('ecm_user')->field(['uname','id'])->select();//数组参数
        //Db::table('ecm_user')->field(['uname'=>'a','id'=>'b'])->select();//字段起别名
        //Db::table('ecm_user')->field(true)->select();//显示查询
        //$list=Db::table('ecm_user')->withoutField('id,uname')->select();//排除字段
        //$list=Db::table('ecm_user')->field('upper(md5(id)) id,uname')->select();//使用函数
    }

    public function goodList()
    {
        $where=[];
        $show=Request::param("is_show");
        $hot=Request::param("is_hot");
        $down=Request::param("is_down");
        $cid=Request::param("cid");
        $keywords=Request::param("keywords");
        if ($show<>''&&isset($show)) $where[]=["is_show",'=',"$show"];
        if ($hot<>''&&isset($hot)) $where[]=["is_hot",'=',"$hot"];
        if ($down<>''&&isset($down)) $where[]=["is_down",'=',"$down"];
        if ($cid<>''&&isset($cid)) $where[]=["cid",'=',"$cid"];
        if ($keywords<>''&&isset($keywords)) $where[]=["keywords",'=',"$keywords"];
        $list=\think\facade\Db::table('ecm_goods')
            ->alias('a')
            ->where($where)
            ->join(' ecm_category b','a.cid=b.id')
            ->field('a.id,a.name,a.price,a.photo_x,a.content,a.addtime,a.sort,a.is_show,a.is_down,a.is_hot,b.name as bname')
            ->select();
        $parent=\think\facade\Db::table("ecm_category")
            ->where('parentid','=',0)
            ->select()->toArray();
        foreach ($parent as $k=>$v){
            $parent1=\think\facade\Db::table('ecm_category')
                ->where('parentid','=',"{$v['id']}")
                ->select()->toArray();
            $parent[$k]['parent1']=$parent1;
        }
        View::assign('list',$list);
        View::assign('parent',$parent);
        return View::fetch('index/good_list');
    }

    public function heightWhere()
    {
        //聚合查询
        //$str=Db::name('user')->count();   个数
        //$max=Db::name('user')->max('addtime');    最大
        //$min=Db::name('user')->min('addtime');    最小
        //$avg=Db::name('user')->avg('id');     平均数
        //$sum=Db::name('user')->sum('id');     总和

        //快捷查询
        //$res=Db::name('user')
            //->where('uname|nickname','like','%悟%')
            //->find();
        //闭包查询
        //$res=Db::name('brand')
            //->where(function ($q){
                //$q->whereOr('brand_logo','=','')
                    //->whereOr('brand_logo',null);
            //})
            //->where('if_show',0)
            //->select();

        //快捷查询
        //$res=Db::name('user')
            //->whereLike('uname','%悟%')
            //->select();
        //Db::name('user')
            //->whereColumn('openid','>','sex')
            //->select();

        //动态查询
        //$str=Db::name('user')
            //->whereUname('唐僧')
            //->select();
        //$str=Db::name('user')
           //->where('uname','=','唐僧')
            //->select();

//        $str=Db::name('user')
//            ->getByuname('唐僧');

        //返回字段值
        //$str=Db::name('user')
            //->getFieldByuname('唐僧','nickname');

        //子查询
        //生成sql语句
        //$sql=Db::name('user')->fetchSql(true)->select();
        //$sql=Db::name('user')->buildSql(true);
        //$sql=Db::table($sql.'u')->where('id','<',5)->select();

        //闭包构建子查询
        //$res=Db::name('user')
            //->where('id','in',function ($q){
                //$q->table('ecm_user')->where('id','>','3')->field('id');
            //})
            //->select();

        //分页查询
        $list=Db::name('user')
            ->paginate(
                [
                    'list_rows'=>1,//每行显示数量
                    'page'=>2,//显示第几页内容
                    'query'=>[
                        'id'=>1,
                        'keywords'=>'一'//a链接
                    ]
                ]
            );
        View::assign('list',$list);
        return \view();

    }
}
